Today, many telecommunications service providers use synchronous optical networks (SONET) as a method of transporting data. Before being transported, data may be separated into a plurality of portions (e.g., parts, segments, etc.).
For example, Storage Area Networks (SANs) are used to store large amounts of data, such as financial transactions carried out by banks and other lending institutions. Typically, a SAN comprises a primary storage area and one or more backup storage areas. Usually the primary storage area is responsible for storing original transactions (which have been put into an electronic form) while the backup storage areas are responsible for storing copies of the original transactions in case, for some reason, the originals stored within the primary storage area are not accessible, have been corrupted or worst case, destroyed. Many times the primary and backup storage areas are not located in the same geographic location. Nonetheless, they are connected by a SONET compatible transport network such that when an original transaction is sent to the primary storage area, a copy may also be sent to one or more backup storage areas.
Due to a number of factors, one of which is the large amount of data which needs to be transferred between a primary storage area and a backup storage area, telecommunications service providers operating SONET-based networks prefer to transport data between storage areas as virtually concatenated (VC) data. More specifically, a service provider typically maps data from a SAN into a VC data stream. Thereafter, the VC data stream is further separated into a plurality of portions known as “members” and transported along the network. Telecommunications service providers are constantly looking for ways to transfer data more efficiently in order to conserve bandwidth and thereby (hopefully) increase profitability.
At a receiving end (e.g., storage area), a device is needed to take the many different members and align/combine (collectively referred to as “align”) them into one data stream once again.
Sometimes one of the members has been, relatively speaking, subjected to an unexpectedly long delay. Such a delay may adversely affect the generation of an aligned data stream.
Existing attempts to control, offset or adjust (collectively referred to as “control”) for such delays have been ineffective because the techniques used introduce their own substantial latency (i.e., processing) delays.
For example, one existing technique uses a slow processing large capacity (“SPLC”) memory. Use of such an SPLC memory inherently creates latency delays. In more detail, the key attributes of any memory are throughput, access time, block size and capacity, where throughput is the average number of bits that can be written to, or read from, a memory in a unit of time; access time is the time needed to complete a read or write cycle; block size is the number of bits that are written to or read from the memory during a single access cycle; and capacity is the total number of bits a memory can store.
Typically, the larger the capacity of a given memory, the longer it takes to access the memory, i.e., the longer the access time. Accessing SPLCs using bigger block sizes will reduce the average access time per bit and improve throughput. However, the use of bigger block sizes increases inherent latency delays.
Accordingly, it is desirable to control the effects of unexpectedly long delays (sometimes referred to as “differential delays”) between arriving members, and more generally between arriving portions of a data stream, in order to generate an aligned data stream without incurring the latency delays associated with existing techniques.